import React, { Component } from 'react'

export default class Son extends Component {
  state = {
    msg: 'hello',
  }
  // 这个是类组件的生命周期钩子函数,在更新阶段执行. 是在render之前执行.
  // 如果这个钩子的返回值是true,则当前组件执行render重新渲染,如果返回false,则当前组件停止更新,不会重新渲染
  shouldComponentUpdate(nextProps, nextState) {
    // 建议直接返回布尔值

    // 如果app传过来的新数据和上一次的数据相同则不更新,不同则更新
    // 注意: 其他的生命周期钩子里面this.state和this.props一定是最新的数据,但是shouldComponentUpdate比较特殊,这个里面this.state和this.props是上一次的旧 的数据
    // nextProps和nextState是最新的数据

    return this.props.c !== nextProps.c || this.state.msg !== nextState.msg
  }
  render() {
    console.log('Son更新了')
    return (
      <>
        <div>Son, {this.props.c}</div>
        <div>Son, {this.state.msg}</div>
        <button
          onClick={() => {
            this.setState({
              msg: '性能优化',
            })
          }}
        >
          SON的按钮
        </button>
      </>
    )
  }
}
